<?php

/**
 * Description of Utility
 *
 * @author HEO
 */
class Utility {
    /*
     * This function for password encryption.
     * return
     */

    public static function encrypt($string = '', $salt = '') {
        return md5($string . $salt);
    }

    /**
     * Get Ip of user
     */
    public static function getIP() {

        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        } else {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
        return $ip;
    }

    public static function sendMail($to, $subject = null, $body = null) {
        Yii::import('ext.yii-mail.YiiMailMessage');
        $message = new YiiMailMessage();
        $message->subject = $subject;
        $message->setBody($body);
        $message->addTo($to);
        // TODO: change default webmaster mail.
        $message->from = 'langvanhao@gmail.com';
        return Yii::app()->mail->send($message);
    }

    public static function toAscii($str) {
        $str = preg_replace("/(à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ)/", 'a', $str);
        $str = preg_replace("/(è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ)/", 'e', $str);
        $str = preg_replace("/(ì|í|ị|ỉ|ĩ)/", 'i', $str);
        $str = preg_replace("/(ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ)/", 'o', $str);
        $str = preg_replace("/(ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ)/", 'u', $str);
        $str = preg_replace("/(ỳ|ý|ỵ|ỷ|ỹ)/", 'y', $str);
        $str = preg_replace("/(đ)/", 'd', $str);
        $str = preg_replace("/(À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ)/", 'A', $str);
        $str = preg_replace("/(È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ)/", 'E', $str);
        $str = preg_replace("/(Ì|Í|Ị|Ỉ|Ĩ)/", 'I', $str);
        $str = preg_replace("/(Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ)/", 'O', $str);
        $str = preg_replace("/(Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ)/", 'U', $str);
        $str = preg_replace("/(Ỳ|Ý|Ỵ|Ỷ|Ỹ)/", 'Y', $str);
        $str = preg_replace("/(Đ)/", 'D', $str);
        $str = ereg_replace("[-.,]", "", $str);
        $str = ereg_replace("[^ A-Za-z0-9]", " ", $str);
        return $str;
    }

    public static function toAlias($str) {
        $str = self::toAscii($str);
        $word_list = split(' ', $str);
        $str = '';
        foreach ($word_list as &$word) {
            if ($word != '')
                $str .= '-' . $word;
        }
        return trim(strtolower(substr($str, 1, strlen($str))));
    }

    public static function getFileExtension($filename) {
        return strtolower(substr($filename, strpos($filename, '.') + 1));
    }

    public static function numberFormat($num) {
        return ($num > 0) ? number_format($num, 0, ',', '.') : '<div style="font: italic normal 12px Arial">Đang cập nhật</div>';
    }

    public static function getDateString() {
        $day = explode(" ", gmdate("w d n Y", time()));
        $dayname = ($day[0]);
        $dayno = ($day[1]);

        switch ($dayname) {
            case 0: $dayname = "Chủ nhật, ";
                break;
            case 1: $dayname = "Thứ hai, ";
                break;
            case 2: $dayname = "Thứ ba, ";
                break;
            case 3: $dayname = "Thứ t&#432;, ";
                break;
            case 4: $dayname = "Thứ n&#259;m, ";
                break;
            case 5: $dayname = "Thứ s&aacute;u, ";
                break;
            case 6: $dayname = "Thứ b&#7843;y, ";
                break;
            default : $dayname = "Hôm nay, ";
                break;
        }
        $str_search = array("am", "pm");
        $str_replace = array(" sáng", " chiều");
        $timenow = gmdate("g:i a.", time() + 7 * 3600);
        $timenow = str_replace($str_search, $str_replace, $timenow);

        $stringdate = $dayname . $dayno . " tháng " . $day[2] . " năm " . $day[3];

        return $stringdate;
    }

    public static function subString($string, $number) {
        if (strlen($string) <= $number) {
            return $string;
        } else {
            if (strpos($string, " ", $number) > $number) {
                $n = strpos($string, " ", $number);
                $s = substr($string, 0, $n) . "...";
                return $s;
            }
            // trường hợp còn lại không ảnh hưởng tới kết quả 
            $s = substr($string, 0, $number) . "...";
            return $s;
        }
    }

    public static function compress($html) {
        $replace = array(
            "#<!--.*?-->#s" => "", // strip comments
            "/\s\s+/" => " ", // strip excess whitespace
            "#>\s+<#" => "><", // strip excess whitespace
                //"#\n\s+<#"      => "<"    // strip excess whitespace
        );
        $search = array_keys($replace);
        $html = preg_replace($search, $replace, $html);
        return str_replace("\r\n", "", $html);
    }

}